بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل ساخت دیتابیس در داخل SD Card
سلام و خسته نباشید خدمت دوستان
من یه برنامه دارم که به عنوان مثال کاربر یک متنی را وارد میکند و دیتابیس ساخته میشود. و دیتابیس به صورت پیش فرض داخل assest وجود ندارد.
اما میخوام دیتابیس به طور مستقیم داخل SD Card ذخیره شود. (حتی اصلا نیاز نیست که داخل حافظه گوشی ذخیره بشه). با توجه به کدی که من میزنم دیتابیس داخل device storag ساخته میشه. در عکس زیر مشخص کردم.
این کدی که من می نویسم دیتابسیم داخل device storage ذخیره میشه. دسترسی های لازم هم در manifest انجام دادم. کدهای ساخت دیتابیس را در داخل کلاس dbOpenHelper نوشتم که extends شده از SQLiteOpenHelper. کدها را در زیر قرار دادم تا دوستان مشاهده کنند چطور ساخته میشود.
public class dbOpenHelper extends SQLiteOpenHelper {
// Get SD Card Path
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
//Database File path and name
public static final String DIR_DATABASE = DIR_SDCARD + "/Keyboard/DB";
//Database Version
public static final int DATABASE_VERSION = 1;
// Table Name
public static final String TABLE_NAME = "mainTable";
// Table Columns names
public static final String TABLE_ID = "id";
public static final String ID_NAME = "name";
public static final String FIRST_COL = "word";
// Creating Tables
public static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "("
/* column 0 */ + TABLE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
/* column 1 */ + ID_NAME + " TEXT,"
/* column 2 */ + FIRST_COL + " TEXT);";
// Constructor Table
public dbOpenHelper(Context context) {
// Create database
super(context, DIR_DATABASE, null, DATABASE_VERSION);
}
// OnCreate
@Override
public void onCreate(SQLiteDatabase database) {
new File(DIR_DATABASE).mkdirs();
database.execSQL(CREATE_TABLE);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase database, int i, int i1) {
// Drop older table if existed
database.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
// Create Table again
onCreate(database);
}
}
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
Shadow
9 سال پیش
+1
0
از این کد استفاده کن :
public void exportDatabse(String databaseName) {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+"";
String backupDBPath = "backupname.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
}
} catch (Exception e) {
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
